package main

import (
	"fmt"
)

func test(s[]int){

	s[0]=100
}
//切片 copy/append 引用【指针】
//copy 复制
//append 扩容  但是内部会分配新的内存块
func main(){

	s:=[]int{1,2,3}
	fmt.Println("s=",s)

	s = append(s,4,5,6)
	fmt.Println("s=",s)

	//s = append(s,s...)
	s = append(s,[]int{7,8,9}...)
	fmt.Println("s=",s)

	s1:=[]int{1,2,3,4,5}
	s2:=make([]int,10)

	copy(s2,s1)

	fmt.Println("s1=",s1)
	fmt.Println("s2=",s2)

	//传递给test函数【跟指针原理一样，指向同一块内存】
	s3:=[]int{1,2,3,4,5}
	test(s3)
	fmt.Println(s3)

	//string和slice
	var str string="china@中国"
	s4:=str[3:]
	fmt.Println("s4=",s4)

	//字符串转切片并修改
	slicex:=[]byte(str)
	slicex[0]='z'
	fmt.Println("slicex=",slicex)
	fmt.Println("slicx=",string(slicex))


	slicez:=[]rune(str)
	slicez[0]='美'
	fmt.Println(string(slicez))
}